package com.cskaoyan.javase.string._5stringbuffer;

/**
 * @description: 可变字符串的引入
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 引例:
 *      如果需要对字符串做频繁的拼接,使用String可行吗?
 *          不可行,因为String不可变,每拼一次创建一个对象,过于耗费性能
 *
 * 为了解决频繁拼接字符串String过于耗费性能的问题,引入了可变字符串,有两个:
 *      StringBuffer,StringBuilder
 *      区别:
 *      StringBuffer是线程安全的，StringBuilder是线程不安全的
 * -    StringBuilder的效率会比StringBuffer效率更高，单线程的程序推荐使用StringBuilder
 * -    在多线程的程序中，应该优先考虑使用StringBuffer，安全性要更重要
 * -    它们的效率都比String高很多,在做字符串拼接时
 * 线程安全是通过加锁的形式实现的,所以效率会比不安全的稍低
 *
 *
 */
public class Demo {
    public static void main(String[] args) {
        //String s = "";
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < 1000000; i++) {
            //s += "中国";
            sb.append("中国");
        }
        System.out.println(sb);
    }
}
